iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
0

題目:

https://leetcode.com/problems/plus-one/
給一個陣列把最後一個數字加一,如需要進位把該數字變成零下一進位值加一。

解題思路:

判斷該數字是否大於九需要進位,如需要進位把該數字變為0之後判斷下一個數字是否也需要進位以此循環。如循環到最後一個數字也該進位時,則須建立一個新的陣列來儲存。

C版本:

int* plusOne(int* digits, int digitsSize, int* returnSize) {
    
    if (digits == NULL)
    {
        return NULL;
    }
    int n = digitsSize-1;
    while(n >= 0)
    {
        if(digits[n] < 9)
        {
            digits[n]++;
            *returnSize = digitsSize;
            return digits;
        }else
        {
            digits[n] = 0;
            n--;
        }
    }
    int* newdigit = (int*)malloc((digitsSize+1) * sizeof(int));
    newdigit[0] = 1;
    for(int i = 1; i < (digitsSize+1); i++)
    {
        newdigit[i] = digits[i-1];
    }
    *returnSize = digitsSize+1;
    return newdigit;
}

Javascript版本:

var plusOne = function(digits) {
    var result = [];
    var n = digits.length -1 ;
    
    while(n >= 0)
    {
        if(digits[n] < 9)
        {
            digits[n]++;
            return digits;
        }
        else
        {
            digits[n] = 0;
            n--;
        }    
    }
    result[0] = 1;
    for(var i = 0; i<digits.length; i++)
    {
      result[i+1] = digits[i];      
    }
    return result;
};

程式Github分享:

https://github.com/SIAOYUCHEN/leetcode

相似主題分享:

https://ithelp.ithome.com.tw/users/20100009/ironman/2500
https://ithelp.ithome.com.tw/users/20113393/ironman/2169
https://ithelp.ithome.com.tw/users/20107480/ironman/2435
https://ithelp.ithome.com.tw/users/20107195/ironman/2382
https://ithelp.ithome.com.tw/users/20119871/ironman/2210
https://ithelp.ithome.com.tw/users/20106426/ironman/2136

本日分享:

If you can’t give up on what you love, you must work harder to let others understand.
如果對喜歡的事情沒有辦法放棄,那就要更努力地讓別人看見你的存在


上一篇
DAY8 Pow(x, n)
下一篇
DAY10 Merge Sorted Array
系列文
刷題記錄與人生分享34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言